Technical Q&A QA1154
JCheckBoxMenuItems Fire Twice Using Mac OS Screen MenuBar


Q: JMenuBar ÇâÊñ ÇÃàÍî‘è„Ç…îzíuÇ∑ÇÈÇΩÇflÇ…ÅAê‡ñæÇ≥ÇÍǃǢÇÈÇΔÇ®ÇËÇ… com.apple.macos.useScreenMenuBar ÉvÉçÉpÉeÉBÇÉZÉbÉgǵNjǵÇΩÇ™ÅAJCheckBoxMenuItem ÇëIëÇ∑ÇÈÇΔÅAÉCÉxÉìÉgÇ™ 2 âÒî≠çsÇ≥ÇÍÇÈÇÊǧDžǻÇËNjǵÇΩÅB

A: DZÇÍÇÕä˘ímÇÃñ‚ëËÇ≈Ç∑Ç™ÅASwing Çà UIManager Ç…ÉZÉbÉgÇ≥ÇÍǃǢÇÈÅAJCheckBoxMenuItem É`ÉFÉbÉNÉ}Å[ÉNÇégǡǃçÏê¨ÇµÇΩ JRadioButtonMenuItem ÇégǧDZÇΔÇ…ÇÊǡǃâÒîÇ≈Ç´Ç‹Ç∑ÅBí èÌÇà JRadioButtonMenuItem ÇégÇ¢ë±ÇØÇÁÇÍÇÈÇÊǧDžÅAÅuã[éóÅvÉ`ÉFÉbÉNÉ{ÉbÉNÉXÇçÏê¨ÇµèIǶÇΩÇÁÅAJRadioButtonMenuItem ÇÃÉOÉçÅ[ÉoÉãÉAÉCÉRÉìÇå≥Ç…ñflÇ∑ïKóvǙdžÇËÇ‹Ç∑ÅB

ÉäÉXÉg 1 Ç…ÅA3 ǬÇÃÉÅÉjÉÖÅ[çÄñ⁄ÇçÏê¨Ç∑ÇÈÉRÅ[ÉhÇé¶ÇµÇ‹Ç∑ÅB2 î‘ñ⁄ÇÃçÄñ⁄Åiradio2ÅjÇÕÅAã[éóìIÇ» JCheckBoxMenuItem Çé¶ÇµÅA1 î‘ñ⁄ÇΔ 3 î‘ñ⁄ÇÃçÄñ⁄ÇÕÅADZÇÃâÒîçÙÇΔïπÇπǃí èÌÇà JRadioButtonMenuItem Çégǧï˚ñ@Çé¶ÇµÇ‹Ç∑ÅBJCheckBoxMenuItem à»äOÇÃÉÅÉjÉÖÅ[çÄñ⁄Ç≈ìØólÇÃñ‚ëËÇ™å©Ç¬Ç©Ç¡ÇΩèÍçáÇ…ÇÕÅAÉoÉOïÒçêÇíÒãüǵǃÇ≠ÇæÇ≥Ç¢ÅB

String RADIO_ICON_KEY = "RadioButtonMenuItem.checkIcon"
String CHECK_ICON_KEY = "CheckBoxMenuItem.checkIcon"
JRadioButtonMenuItem radio1, radio2, radio3;

// í èÌÇà JRadioButtonMenuItem
radio1 = new JRadioButtonMenuItem("Radio Icon");

// ÉfÉtÉHÉãÉgÇà JRBMI ÉAÉCÉRÉìÇï€ë∂ǵÅAå„Ç≈å≥Ç…ñflÇ∑
Object radioIcon = UIManager.get(RADIO_ICON_KEY);

// JRBMI Çà checkIcon Ç JCheckBoxMenuItem Çà checkIcon Ç≈íuÇ´ä∑ǶÇÈ
// radio2 ÇÕ JCBMI ÇΔéóÇΩÇÊǧǻLJÇÃÇ…Ç»ÇÈ
UIManager.put(RADIO_ICON_KEY, UIManager.get(CHECK_ICON_KEY));
JRadioButtonMenuItem radio2 = new JRadioButtonMenuItem("Check Icon");

// ÉIÉäÉWÉiÉãÇà JRBMI Çà checkIcon Çå≥Ç…ñflÇ∑
UIManager.put(RADIO_ICON_KEY, radioIcon);

// DZÇÍÇ≈ radio3 ÇÕ JRBMI ÇÃå≥ÇÃÉAÉCÉRÉìÇ…ñflÇÈ
radio3 = new JRadioButtonMenuItem("Radio Icon");

ÉäÉXÉg 1 JRadioButtonMenuItem ÇégÇ¡ÇΩã[éóÉ`ÉFÉbÉNÉ{ÉbÉNÉXã@î\




[2002 îN 7 åé 12 ì˙]